perm filename MPRFAI.FAI[NEW,LCS]8 blob
sn#461037 filedate 1979-07-23 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE MPRFAI
C00025 ENDMK
C⊗;
TITLE MPRFAI
ENTRY MPRFAI,PSRT
EXTERNAL DL,FRMT,.COMM.,XRN,ALF,STF,POSI,PTR,DPY,FONT,PLTR,CIRCLE
EXTERNAL PLOT,ALPHA,NOTWRT,METER,SLUR,NOTWRT,ROFF,RHORZ,RESET
EXTERNAL ITMSUB,GETEXT,EXTIN,BEAMX,TOOMCH,ENDIT,STAFF,LIMIT
EXTERNAL KSIG,MAKNUM,CLEFS,UNKNWN,ILLEGL,CENTX,RUNTHR,PLTCMD
; IMPLICIT INTEGER(A-Q,S-Z)
; REAL DIS,DISX,A,B,STFF,CENTR,POS,BOT,TOP,TOP2,TOTAL
; COMMON /DL/IXRX,SAVER,NAME /FRMT/F78F(1),FA1(1),FA5(1),ASK
; COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
; ↓↓↓↓↓ V IS FOR READIN ONLY
; COMMON /XRN/RN(3000),V(1000) /ALF/INP(72),ML
; 1 /STF/RSTFAC(-3/4),RSTJ2 /POSI/STFF(-3/4),JJ2,POS
; 1 /PTR/PWDS(250),ITEM,L,I,M /DPY/GO,TOP,BOT /FONT/JFONT
; 1/PLTR/PLT,RHT,DIS,XDIS
; EQUIVALENCE (J3,JQ(1)),(J5,JQ(3)),(R5,RJQ(3)),(POS,IPOS)
; 1,(R6,RJQ(4)),(R7,RJQ(5)),(R9,RJQ(7)),(J10,JQ(8)),(RX3,RJQ(20))
; 1,(R4,RJQ(2)),(R3,RJQ(1)),(I1,INP(1)),(R8,RJQ(6))
; DATA IP/'P'/,FA1/'( A1)'/
MM←1↔NN←2↔J←3↔LL←4↔ AA←6↔Y←7↔V←10 ↔R←12↔RN←13↔K←14↔RB←15↔KK←11↔SY←5
MPRFAI: 0
SETZM ITMS# ; ITMS=0
SETZM TOTAL ; TOTAL=0
MOVN [999.0] ; RPLT=-999.
MOVEM RPLT# ; RPLT WILL BE FOR HEAVY STAFF LINES.
;;MP23: JSA 16,RESET ;23 TYPE 21
;; K# ;21 FORMAT(' RESET BOTTOM? '$)
;; MOVE K ; ACCEPT FA1,K
;; CAMN [ASCII/A /] ; IF(K.EQ.'A')GO TO 124
;; JRST MP124 ; IF(K.EQ.'P')GO TO 123
;TYPE 'P' FOR PRIM FONT ONLY. 'A' FOR ALL, IF RESET IS NEEDED.
;; CAMN [ASCII/P /]
;; JRST MP123
;; JRST MP24 ; GO TO 24
;;MP123: SETOM FONT ;123 JFONT=-1
;; JRST MP23 ;GO TO 23
;;MP124: SETZM FONT ;124 JFONT=0
;; JRST MP23 ; GO TO 23
;;MP24: CAMN [ASCII/N /] ;24 IF(K.EQ.'N')GO TO 22
;; JRST MP22 ; 'Y' OR <CR>=ABSOLUTE LOW POINT OF FILE WILL BE AT
; STARTING PEN POS.
; 'N'= BOTTOM OF STAFF 0 WILL BE AT STARTING PEN POS.
;; MOVN [999.0] ; TOP2=-999
;; MOVEM TOP2
;; SETZM RNOMOV# ; RNOMOV=0
MP22: SETZM ALF ;22 I1=0
;RESTART PROG. OR TYPE 'F' TO FINISH PLOTTER.(IT'S NOT AUTOMATIC.)
MP2: MOVE [999.0] ;2 TOP=-999
MOVNM DPY+1
MOVEM DPY+2 ; BOT=999
MP20: SETZM PLTR ;20 PLT=0
SETZM PLOTIT# ; PLOTIT=0
SETOM EDX# ; EDX=-1
MOVEI 1 ; M=1
MOVEM LIMIT+4
;; MOVEM PTR+=253
JRST MP5504 ; GO TO 5504
MP11: JSA 16,NOTWRT ;11 CALL NOTWRT
MP57: SKIPGE PLTR ;57 IF(PLT)GO TO 6120
JRST MP6120
AOS LIMIT+1 ; ITEM=ITEM+1
;; AOS PTR+=250 ; ITEM=ITEM+1
SKIPGE EDX ; IF(EDX.EQ.-1)GO TO 77
JRST MP77
MOVE LIMIT+=4 ; M IF(M.LT.I)GO TO 6120
CAMGE LIMIT+=3 ; I
;; MOVE PTR+=253 ; M IF(M.LT.I)GO TO 6120
;; CAMGE PTR+=252 ; I
JRST MP6120
MP77: MOVN PLOTIT ;77 IF(PLOTIT.EQ.-2)GO TO 2311
CAIN 2
JRST MP2311
MP5504: MOVE [ASCII/P /] ;5504 IF(I1.EQ.IP)GO TO 2311
CAMN ALF
JRST MP2311
MOVEM ALF ; I1=IP
MOVE [ASCII/% /] ;INP(2)='%' FLAG FOR 1ST TIME IN PLTCMD
;;; MOVE [ASCII/X /] ; INP(2)='X'
MOVEM ALF+1
MP311: SETZM .COMM.+1 ;311 JA=0
MP2311: SETZM NOSET
JSA 16,PLTCMD ;2311 CALL PLTCMD(NOSET)
JUMP NOSET#
MOVN ALF+1 ; IF(INP(2).EQ.-1)GO TO 30
CAIN 1
JRST MP30 ; **** END OF DATA ***
SKIPN PLOTIT ; IF(PLOTIT.EQ.0)GO TO 3005
JRST MP3005
MOVE [ASCII/P /] ; I1=IP
MOVEM ALF
SETOM PLOTIT ; PLOTIT=-1
MOVEI 1 ;6531 M=1
MOVEM LIMIT+=4
;; MOVEM PTR+=253
SETOM EDX ; EDX=-1
SETZ 2, ; DO 5532 K=1,9
MP5532: KIFIX .COMM.+4(2) ;5532 JQ(K)=RJQ(K)
MOVEM .COMM.+=24(2)
CAIE 2,=8
AOJA 2,MP5532
MOVNI 1 ; IF(PLOTIT.EQ.-1)GO TO 5121
CAMN PLOTIT
JRST MP5121
MP590: SETZM ALF ;590 I1=0
; TO RUN THROUGH DATA.
MOVE [999.0] ; TOP=-999
MOVNM DPY+1
MOVEM DPY+2 ; BOT=999
;GOES TO PLOTTER
MP85: MOVEI 1 ;85 M=1
MOVEM LIMIT+=4
SETZM LIMIT+=1 ; ITEM=0
;; MOVEM PTR+=253
;; SETZM PTR+=250 ; ITEM=0
MOVEM PLTR ;8852 PLT=1
SETZM EDX ; EDX=0
JRST MP6120 ; GO TO 6120
MP30: MOVE TOTAL ;30 A=TOTAL/200.0
FDVR [200.0] ; TYPE 300,A,ITMS
MOVEM K# ; CALL PLOT(0,0,99)
JSA 16,ENDIT ; THE END OF THE DATA
JUMP K ;300 FORMAT(F7.2,' INCHES',I,' ITEMS')
JUMP ITMS#
MP60: KIFIX 2,.COMM. ;60 J2=R2
MOVEM 2,.COMM.+3
CAIL 2,8 ; IF(J2.LT.5)GO TO 16
;%%%% CAIL 2,5 ; IF(J2.LT.5)GO TO 16
JRST MP160 ;IF(J2.GT.-4)GO TO 16
JUMPGE 2,MP16 ; IF J2 < 0 TYPE 160,J2
;%%%%% CAMLE 2,[-4] ; TYPE 160,J2
;%%%%% JRST MP16
MP160: JSA 16,ILLEGL ; GO TO 57
JUMP .COMM.+3 ;160 FORMAT(' ILLEGAL STAFF# ',I4)
JRST MP57
MP16: MOVE STF(2) ;16 RSTJ2=RSTFAC(J2) %%%%%% WAS +3(2)
MOVEM STF+10
MOVE POSI(2) ;%%%%%%% WAS +3(2)
MOVEM POSI+11 ; 5541 POS=STFF(J2)
MOVE .COMM.+1 ; IF(JA.NE.16)GO TO 61
CAIE =16
JRST MP61
MOVE .COMM.+6 ; IF(R5.GE.100)R5=R5-100
CAMGE [100.0] ;>100 FOR TEXT IN ORCH SCORES TO GO IN ALL SEP PARTS
JRST .+3
FSBR [100.0]
MOVEM .COMM.+6 ; R5
MOVE .COMM.+=31 ; IF(J10.NE.1)GO TO 62
CAIE 1
JRST MP62
MOVE RWD3 ; R3=RWD3
MOVEM .COMM.+4 ;C POSITIONS TEXT ITEMS.
MP62: MOVE .COMM.+6 ;62 RWD3=R5*RSTJ2*R9+R3
FMPR STF+10 ;RSTJ2
FMPR .COMM.+=10 ;R9
FADR .COMM.+4 ;R3
MOVEM RWD3
MP61: MOVE .COMM.+4 ;61 RX3=R3
MOVEM .COMM.+=23
JSA 16,RHORZ
JUMP .COMM.+4 ; J3=ROFF(RHORZ(R3))
JSA 16,ROFF ;C LINE IS DIVIDED INTO 200 POINTS.
JUMP 0
KIFIX
MOVEM .COMM.+=24 ; J3
JSA 16,CENTX ; CALL CENTX
FLTR .COMM.+=24 ; SETS VERT.(CENTR) POSITION BASED ON STAFF AND R4
MOVEM .COMM.+4 ; R3=J3
MOVE 2,.COMM.+1 ; IF(JA.LE.2)GO TO 11
CAIL 2,=19 ;IF(JA.GT.18)CALL UNKNWN(JA)
JRST MP5700
JRST .@(2)
MP11
MP11
MP68
MP25
MP67
MP625 ;JA=6
MP116
MP125
MP11
MP69 ;JA=10
MP68
MP12
TOTAL: 0 ;JA NEVER =13,14,15
RWD3: 0
TOP2: 0
MP116
MP81 ;JA=17
;551 GO TO(11,11,68,25,67, 625,116,125,11,69, 68,67),JA
MP80
MP80: JSA 16,METER ; GO TO (116,81,80),JA-15
JRST MP57 ;C FOR 16,17,18 (WORDS, KSIG, METER)
MP5700: JSA 16,UNKNWN ; TYPE 5700,JA
JUMP .COMM.+1 ;5700 FORMAT(' UNKNOWN CODE=',I3)
JRST MP57 ; GO TO 57
;TRAP FOR UNKNOWN CODE #S (SUCH AS 99-FOR "NO KSIG".
MP69: JSA 16,MAKNUM ;69 CALL MAKNUM(R5)
JUMP .COMM.+6 ; GO TO 57
JRST MP57
MP68: JSA 16,CLEFS ;68 CALL CLEFS
JRST MP57 ; GO TO 57
MP67: JSA 16,SLUR ;67 CALL SLUR
JRST MP57 ; GO TO 57
MP116: JSA 16,ALPHA ;116 CALL ALPHA
JRST MP57 ; GO TO 57
MP81: JSA 16,KSIG ;81 CALL KSIG
JRST MP57 ; GO TO 57
MP12: JSA 16,CIRCLE
JRST MP57 ;80 CALL METER
; GO TO 57
MP125: SKIPE .COMM. ;125 IF(R2.EQ.0)RMOV=R8
JRST .+3
MOVE .COMM.+=9
MOVEM RMOV#
JSA 16,STAFF
JRST MP57
MP625: JSA 16,BEAMX ;625 CALL BMSTF
; BEAMS AND STAVES
JRST MP57 ; GO TO 57
MP25: JSA 16,ITMSUB ;25 CALL ITMSUB
; BAR LINES AND SEVERAL OTHER KINDS OF LINES.
JRST MP57 ; GO TO 57
MP3005: MOVN [999.0] ;3005 IF(RPLT.EQ.-999.)RPLT=R9
CAME RPLT ;C R9=1 FOR HEAVY STAFF LINES. (FOR XGP)
JRST .+3
MOVE .COMM.+=10
MOVEM RPLT
MOVNI 2 ; PLOTIT=-2
MOVEM PLOTIT
SKIPN ITMS ;FIRST TIME CHECK FOR NOSET FLAG
SKIPE NOSET ;NOSET=-1 IF NOSET IS ON
JRST GETEM
MOVN [999.0] ; TOP2=-999
MOVEM TOP2
SETZM RNOMOV# ; RNOMOV=0
GETEM: JSA 16,GETEXT ; CALL GETEXT(NAME,EXT)
JUMP DL+2 ;C JUMP TO READ BIG FILES
JUMP DL+3
JSA 16,EXTIN ; CALL EXTIN(RSTFAC,128)
JUMP STF
JUMP [=128]
JSA 16,EXTIN ; CALL EXTIN(PWDS,JJ2)
JUMP PTR
JUMP POSI+10
;; JSA 16,TTT
;; POSI+10
;; POSI+11
JSA 16,EXTIN ; CALL EXTIN(RN,IPOS)
JUMP XRN
JUMP POSI+11
MOVE POSI+10 ; ITEM=JJ2-2
SUBI 2
MOVEM LIMIT+=1
;; MOVEM PTR+=250
ADDM ITMS ; ITMS=ITMS+ITEM
MOVE POSI+11 ; I=IPOS
MOVEM LIMIT+=3
;; MOVEM PTR+=252
;; CAIG =2500 ;2203 IF(I.LE.2500)GO TO 590
CAIG =3000 ;2203 IF(I.LE.3000)GO TO 590
;; CAIG =2000 ;2203 IF(I.LE.2000)GO TO 590
JRST MP590
JSA 16,TOOMCH ; TYPE 4202,I
JUMP LIMIT+2 ; STOP
;4202 FORMAT(' ***** TOO MUCH DATA ',I4,'/2000')
MP121: SKIPN PLOTIT ;121 IF(PLOTIT.EQ.0)GO TO 5504
JRST MP5504
MP5121: JSA 16,PSRT ;5121 CALL PLTSRT
SETOM PLTR ;IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
;;;;;;;;;;; HEAVY STAFF LINE FEATURE DISABLED 7/23/79 ;;;;;;;;;;;;;;
;;; SKIPE RPLT ; PLT=-1
;;; SOS PLTR ; IF(RPLT.NE.0)PLT=-2
;;;;;;;;;;; HEAVY STAFF LINE FEATURE DISABLED 7/23/79 ;;;;;;;;;;;;;;
;C (J8) P8=1 OR 2 FOR 2-PASS PLOTS
MOVE 2,.COMM.
FMPR 2,[1.24] ; DIS=R2*1.24
MOVEM 2,PLTR+2
MOVE [1.0]
FDVR 2
MOVEM PLTR+3 ; XDIS=1/DIS
MOVE .COMM.+4 ; RHT=R3*1.2
FMPR [1.2] ;1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
MOVEM PLTR+1
MOVE 3,RMOV ;FIRST TIME RMOV=0 OR +
JUMPN 3,TOTL1 ; IF(RMOV.NE.0)GO TO TOTL1
;; SKIPE TOTAL
;; JRST TOTL1
SETO 3, ; SET AC3 (FLAG) TO -1
MOVE 2,DPY+1 ;**** IF(RMOV.EQ.0)TOTAL=TOTAL+(TOP-BOT)*RHT
FSBR 2,DPY+2
FMPR 2,PLTR+1
FADRM 2,TOTAL ;TOTAL=TOTAL IMAGE LENGTH (IN 200THS INCH)
TOTL1: FMPR DPY+2 ;A=BOT*RHT
MOVEM A# ;??????
MOVNM DPY+2 ; BOT=-A
JUMPL 3,TOTL2 ; IF(AC3.LT.0)GO TO TOTL2
SKIPLE RMOV ; IF(RMOV.GT.0)GO TO TOTL3
JRST .+3
SKIPN TOTAL ; IF(TOTAL.EQ.0)TOTAL=BOT
MOVNM TOTAL
MOVE PLTR+1 ;TOTL3: TOTAL=TOTAL+TOP*RHT
FMPR DPY+1
FADRM TOTAL ;TOTAL includes BOT with first file only.
TOTL2: MOVN [999.0] ; IF(TOP2.EQ.-999)GO TO 8121
CAMN TOP2
JRST MP8121
MOVE 2,TOP2 ; BOT=BOT+TOP2
FADRM 2,DPY+2
SKIPN TOP2 ; IF(TOP2.EQ.0)BOT=0
SETZM DPY+2
MOVE DPY+2
MOVEM A ; A=BOT
JRST MP9121 ; GO TO 9121
MP8121: SETZM RNOMOV ;8121 RNOMOV=0
MP9121: SKIPE .COMM.+=8 ;9121 IF(R7.EQ.0)R7=RMOV
JRST .+3 ;RMOV HAS INCHES FROM P8 OF STAFF 0.
MOVE RMOV
MOVEM .COMM.+=8
MOVE RNOMOV ; IF(RNOMOV.GT.1)BOT=RNOMOV
CAMLE [1.0]
MOVEM DPY+2
MOVE [200.0] ; RNOMOV=R6+R7*200.*R3
FMPR .COMM.+4
SKIPL .COMM.+=8 ;IF(R7.LT.0)SKIP OVER NEXT
FMPR .COMM.+=8
FADR .COMM.+7
MOVEM RNOMOV#
SETOM RMOV ; RMOV=-1 THIS IS AFTER 1ST TIME.
;;;; SETZM RMOV ; RMOV=0
; R6=1 FOR NO MOVE AT END. R7=# OF INCHES TO MOVE FOR NEW STAFF 0.
SKIPE .COMM.+=26 ;C (J4) P4=1 FOR XGP OUTPUT
JRST MP6120 ; IF(J5.NE.0)GO TO 6120
KIFIX DPY+2 ;C MOVES 0 POINT OVER EACH TIME.
MOVEM K ;6121 CALL PLOT(0,IFIX(BOT),-3)
JSA 16,PLOT ;C MOVES PLOTTER UP IF P5=0.
JUMP [0]
JUMP K
JUMP [-3]
MP6120: MOVE LIMIT+=4 ;C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
;;MP6120: MOVE PTR+=253 ;C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
CAML LIMIT+=3 ;6120 IF(M.GE.I)GO TO 7120
;; CAML PTR+=252 ;6120 IF(M.GE.I)GO TO 7120
JRST MP7120 ; CALL RUNTHR(M)
JSA 16,RUNTHR ; GO TO 60
JUMP LIMIT+=4
JRST MP60
MP7120: MOVEI 1 ;7120 M=1
MOVEM LIMIT+=4
;; MOVEM PTR+=253
MOVE [50.0] ;71201 A=50.*RHT
FMPR PLTR+1
MOVEM A
MOVE PLTR+1 ; TOP=TOP*RHT
FMPRM DPY+1
SKIPN RNOMOV ; IF(RNOMOV.EQ.0)GO TO 7122
JRST MP7122
SETZM A ; A=0
MP7121: MOVE RNOMOV ;7121 IF(RNOMOV.LE.1)GO TO 7123
CAMG [1.0]
JRST MP7123
MOVEM A ; A=RNOMOV
FSBR DPY+1 ; TOTAL=TOTAL+A-TOP
FADRM TOTAL
JRST MP7123 ; GO TO 7123
MP7122: MOVE A ;7122 TOTAL=TOTAL+A
FADRM TOTAL
FADR DPY+1 ; A=A+TOP
MOVEM A
MP7123: KIFIX A ;7123 CALL PLOT(0,IFIX(A),3)
MOVEM K
JSA 16,PLOT
JUMP [0]
JUMP K
JUMP [3]
MOVE RNOMOV ; IF(RNOMOV.EQ.1)GO TO 20
CAMN [1.0] ;C PRESERVES TOP AND BOT IF RNOMOV
JRST MP20
MOVE A ; TOP=A
MOVEM DPY+1
MOVEM TOP2 ; TOP2=TOP
JRST MP2 ; GO TO 2
; TO MOVE 'PLOTTER' FOR XGP OUTPUT
; MOVES PLOTTER UP
; ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
PPP: BLOCK =350 ;THIS WAS 250 - 2/78, 6/78
;; SUBROUTINE PSRT(P)
;; SORTS DATA TO SHORTEN INVISIBLE VECTORS WHEN PLOTTING.
;; IMPLICIT INTEGER(S-Z)
;; COMMON /XRN/RN(4000) /PTR/PWDS(250),ITEM,L,I,IX
;; DIMENSION P(250) **** AN ARGUMENT, INSTEAD.
PSRT: 0 ; DO 4 K=1,ITEM
MOVEI K,PPP ; ADR OF P
MOVEI MM,PTR ;L=PWDS(K)
MOVEI RB,(MM)
MOVE NN,LIMIT+1 ; ITEM
;; MOVE NN,PTR+=250 ; ITEM
ADDI NN,-1(MM) ; LAST ADR. OF PWDS
MOVE SY,[16.0]
PL4: MOVE R,(MM) ;LL=PWDS(K-1)
;LM=PWDS(K+1)
;A=RN(L+3)
;P(K)=A+1000*RN(L+2)
MOVE AA,XRN+2(R)
MOVE J,XRN+1(R)
FMPR J,[=1000.0]
FADR J,XRN+2(R) ; IF(RN(L+1).NE.16)GO TO 40
MOVE V,XRN(R)
CAME V,[=8.0] ;IF(RN(L+1).EQ.8)P(X)=P(X)-16
JRST PLA
FSBR J,[=16.0]
MOVE AA,[=1000.0]
PLA: MOVEM J,(K)
CAME V,SY
JRST PL40
CAIN RB,(MM)
JRST PLAQ ;IF (K.EQ.1) GO TO PLAQ
MOVE Y,-1(MM) ;Y=PWDS(K-1)
CAMN SY,XRN(Y)
JRST PL41
PLAQ: MOVE V,1(MM) ;V=PWDS(K+1) ;IF(RN(V+1).EQ.16)GO TO 41
CAMN SY,XRN(V)
JRST PL41
JRST PLS ;GO TO 4
PL40: JUMPGE AA,PLS ;40 IF(A.GE.0)GO TO 4
PL41: MOVN AA,[=10000.0] ;41 P(K)=-10000
MOVEM AA,(K)
PLS: CAIL MM,(NN) ;4 CONTINUE
JRST PLX
AOJ MM,
AOJA K,PL4
; PLOTS ALL NEG. POSITIONS FIRST.
PLX: MOVE AA,LIMIT+3 ;IX=I
MOVEM AA,LIMIT+4
CAIL AA,=3000 ;IF(I.LT.1500)I=1500
;;6/78 CAIL AA,=1500 ;IF(I.LT.1500)I=1500
JRST PLY
MOVEI AA,=3000
;;6/78 MOVEI AA,=1500
MOVEM AA,LIMIT+3
PLY: MOVEI Y,(AA) ; Y=I
ADD AA,LIMIT+4 ;I=I+IX-1
SUBI AA,1
MOVEM AA,LIMIT+3
MOVEM Y,LIMIT+4 ;IX=Y
; IX IS M IN MAIN PROG.
; LEAVES 1500 WDS IN RN FOR STORING "NOIR" DATA.
PL2: MOVE AA,PPP ;2 A=P(1)
MOVEI R,1 ;L=1
MOVEI J,1
MOVEI K,PPP ;DO 1 K=1,ITEM
MOVE NN,LIMIT+1
ADDI NN,(K) ;P(ITEM)
PL1: CAMG AA,(K) ;IF(A.LE.P(K))GO TO 1
JRST PLZ
MOVE AA,(K) ;A=P(K)
MOVE R,J ;L=K
PLZ: CAIL K,-1(NN) ;1 CONTINUE
JRST PLW
AOJ K,
AOJA J,PL1
PLW: CAMN AA,[=10000.0] ; IF(A.EQ.10000.)RETURN
JRA 16,(16)
; ALL ITEMS HAVE NOW BEEN SHUFFLED
MOVEI V,PTR ;V=PWDS(L)
ADDI V,(R)
MOVE V,-1(V)
MOVE AA,[=10000.0] ;P(L)=10000
MOVEI J,PPP
ADDI J,(R)
MOVEM AA,-1(J)
MOVEI R,XRN ;L=RN(V)+2+Y
ADDI R,(V)
KIFIX R,-1(R)
ADDI R,2
ADDI R,(Y)
SUBI V,(Y) ;V=V-Y
MOVEI K,XRN ;DO 3 K=Y,L
ADDI K,(Y)
MOVEI NN,XRN
ADDI NN,(R)
PL3: MOVEI AA,(K)
ADDI AA,(V) ;3 RN(K)=RN(K+V)
MOVE AA,-1(AA)
MOVEM AA,-1(K)
CAIGE K,(NN)
AOJA K,PL3
;; REPLACED SUBROUTINE LOOP
MOVEI Y,(R) ;Y=L+1
ADDI Y,1
JRST PL2 ;GO TO 2
END